package cbm.admin.controller;

import java.util.Date;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.ModelAndView;

import cbm.commons.BaseController;
import cbm.commons.ConstantsWeb;
import cbm.commons.RequestHelper;
import cbm.commons.ResultadoOperacionBean;
import cbm.commons.SessionContainer;
import ejb.cbm.admin.bean.LoteArchivoBean;
import ejb.cbm.admin.local.ArchivoFacadeLocal;
import ejb.cbm.commons.StackTrace2String;
import ejb.cbm.seguridad.bean.RegistroIngresoBean;
import ejb.cbm.seguridad.bean.RegistroPerfilBean;

public class ConsultaCargaArchivoController extends BaseController{
	
	public ArchivoFacadeLocal archivoFacadeLocal;
	
	public ModelAndView open(HttpServletRequest request, HttpServletResponse response){
		String paginaSig = resources.getString("consultar_cargas");
		
		return new ModelAndView(paginaSig);
	}
	
	public ModelAndView buscar(HttpServletRequest request, HttpServletResponse response){
		
		HttpSession session = request.getSession(false);
		String paginaSig = "administrativo/ConsultarCargasTabla.jsp";
		ResultadoOperacionBean resultado = new ResultadoOperacionBean(ConstantsWeb.EXITO,"",ConstantsWeb.MSGEXITO);
		List<LoteArchivoBean> listResultado = null;
		SessionContainer sessionContainer = (SessionContainer)session.getAttribute(ConstantsWeb.SESSION_CONTAINER);
		RegistroIngresoBean registroIngreso = (RegistroIngresoBean)sessionContainer.getSessionElement(ConstantsWeb.REGISTRO_INGRESO);
		LoteArchivoBean filtro = null;
		Context context = null;
		
		try{
			
			filtro = this.getFormularioAsBean(request);
			context = new InitialContext();
			archivoFacadeLocal =(ArchivoFacadeLocal)context.lookup("CBM/ArchivoFacade/local");

			listResultado = archivoFacadeLocal.buscarLotesGenerados(filtro);
			
			if(listResultado.size()==0)listResultado = null;

		}catch(RuntimeException e){
			e.printStackTrace();
			paginaSig = resources.getString("pagina_error");
			resultado.setResultado(ResultadoOperacionBean.ERROR);
			resultado.setTitulo(ResultadoOperacionBean.TITULO_ERROR);
			resultado.setMensaje(ResultadoOperacionBean.MSGEXITO);
			resultado.setTrace(StackTrace2String.stackTraceToString(e));
		}catch(NamingException e){
			e.printStackTrace();
			paginaSig = resources.getString("pagina_error");
			resultado.setResultado(ResultadoOperacionBean.ERROR);
			resultado.setTitulo(ResultadoOperacionBean.TITULO_ERROR);
			resultado.setMensaje(ResultadoOperacionBean.MSGEXITO);
			resultado.setTrace(StackTrace2String.stackTraceToString(e));
		}
		
		sessionContainer.addTemporal(ConstantsWeb.GRILLA, listResultado);
		
		return new ModelAndView(paginaSig,ConstantsWeb.RPTA_AJAX_REQUEXT,resultado.getAsArrayJS());
	}
	
	public ModelAndView notificar(HttpServletRequest request, HttpServletResponse response){
		return null;
	}
	
	public LoteArchivoBean getFormularioAsBean(HttpServletRequest request){
		
		LoteArchivoBean datosFormulario = new LoteArchivoBean();
		
		String nombreArchivo = RequestHelper.getParameterString(request, "txtNombreArchivo");
		Date fechaInicio     = RequestHelper.getParameterDate(request, "txtFechaInicio");
		Date fechaFin        = RequestHelper.getParameterDate(request, "txtFechaFin");

		datosFormulario.setNombrearchivo(nombreArchivo);
		datosFormulario.setFechainicio(fechaInicio);
		datosFormulario.setFechafin(fechaFin);
		
		return datosFormulario;
	}
}